package es

import (
	"context"
	"strings"
)

// 查询当前配置索引，过滤器，路由的别名
func (e *EsClient) CatAliases(alias, columns string) (res interface{}, err error) {
	return e.rawClient.CatAliases().Alias(alias).Columns(columns).Do(context.Background())
}

// 查询每个节点上分配的分片（shard）的数量和每个分片（shard）所使用的硬盘容量
func (e *EsClient) CatAllocation(columns string) (res interface{}, err error) {
	return e.rawClient.CatAllocation().Columns(columns).Do(context.Background())
}

// 快速查询当前整个集群或者指定索引的document的数量（不包括删除的但是还没有清理掉的document）
func (e *EsClient) CatCount(index, columns string) (res interface{}, err error) {
	return e.rawClient.CatCount().Index(strings.Split(index, ",")...).Columns(columns).Do(context.Background())
}

// 查询集群中每个节点中的fileddata所使用的堆内存
func (e *EsClient) CatFielddata(columns string) (res interface{}, err error) {
	return e.rawClient.CatFielddata().Columns(columns).Do(context.Background())
}

// 查询当前集群的健康信息
func (e *EsClient) CatHealth(columns string) (res interface{}, err error) {
	return e.rawClient.CatHealth().Columns(columns).Do(context.Background())
}

// 查询指定索引的相关信息
func (e *EsClient) CatIndices(index, columns string) (res interface{}, err error) {
	return e.rawClient.CatIndices().Index(index).Columns(columns).Do(context.Background())
}

// 查询指定分片的相关信息
func (e *EsClient) CatShards(index, columns string) (res interface{}, err error) {
	return e.rawClient.CatShards().Index(strings.Split(index, ",")...).Columns(columns).Do(context.Background())
}